"""
动量策略(backtrader实现)
策略逻辑：
1. 计算N日收益率作为动量指标
2. 动量为正时买入，为负时卖出
"""

import backtrader as bt

class MomentumStrategy(bt.Strategy):
    params = (
        ('period', 30),  # 动量计算周期
    )

    def __init__(self):
        # 计算动量指标
        self.mom = bt.indicators.Momentum(
            self.data.close, 
            period=self.p.period
        )

    def next(self):
        if not self.position:  # 没有持仓
            if self.mom[0] > 0:  # 正动量
                self.buy()  # 买入
        elif self.mom[0] < 0:  # 负动量
            self.close()  # 卖出

if __name__ == '__main__':
    cerebro = bt.Cerebro()
    cerebro.addstrategy(MomentumStrategy)
    # 这里添加数据和其他配置
    cerebro.run()